package br.com.JZSolution.domineduplex.gui.dialogos;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import br.com.JZSolution.domineduplex.DomineDuplex;
import br.com.JZSolution.domineduplex.gui.util.ComunicadorDeMensagens;
import br.com.JZSolution.domineduplex.rede.ControladorDeEnvio;

public class PainelDeEnvio extends JPanel {
	
	JFileChooser escolherArquivo;
	File arquivoParaEnviar;
	
	private JTextField campoArquivo;
	private JTextField campoIP;
	private JTextField campoPortaDestino;
	
	public PainelDeEnvio(){
		
		super(new GridLayout(2,0));
		this.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Enviar arquivo",TitledBorder.LEFT,TitledBorder.TOP));
		
		JPanel panelSup = new JPanel(new FlowLayout(FlowLayout.LEFT));
		JPanel panelInf = new JPanel(new FlowLayout(FlowLayout.LEFT));
		
		//panelSup Conteudo	inicio
		JLabel arquivo = new JLabel("Arquivo:  ");
		campoArquivo = new JTextField();
		campoArquivo.setName("campoArquivo");
		DomineDuplex.getInstance().addComponenteLembrado(campoArquivo);
		campoArquivo.setPreferredSize(new Dimension(480,30));
		
		JButton btnArquivo = new JButton("...");
		btnArquivo.setPreferredSize(new Dimension(25,30));
		
		btnArquivo.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
					escolherArquivo = new JFileChooser(DomineDuplex.getUltimoPath());
			        int returnVal = escolherArquivo.showDialog(PainelDeEnvio.this, "Abrir");
			        
			        if (returnVal == JFileChooser.APPROVE_OPTION) {
			        	arquivoParaEnviar = escolherArquivo.getSelectedFile();
			        	campoArquivo.setText(arquivoParaEnviar.getAbsolutePath());
			        	DomineDuplex.setUltimoPath(arquivoParaEnviar.getParent() + "/");
			        	System.out.println("Painelo de envio ultimo path = "+DomineDuplex.getUltimoPath());
			        } 
			}
		});
		//panelSup Conteudo fim
		
		//panelInf Conteudo inicio
		JLabel endereco = new JLabel("Endereço:");
		campoIP = new JTextField();//"127.0.0.1"
		campoIP.setPreferredSize(new Dimension(250,30));
		campoIP.setName("campoIP");
		DomineDuplex.getInstance().addComponenteLembrado(campoIP);
		
		JLabel porta = new JLabel("Porta: ");
		campoPortaDestino = new JTextField();//"60441"
		campoPortaDestino.setPreferredSize(new Dimension(60,30));
		campoPortaDestino.setName("campoPortaDestino");
		DomineDuplex.getInstance().addComponenteLembrado(campoPortaDestino);
		
		JButton btnEnviar = new JButton("Enviar");
		btnEnviar.setPreferredSize(new Dimension(135,29));
		btnEnviar.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				//Enviar mensagem ao receptor se deseja aceitar
				//Esperar a resposta se for Ok prosseguir com o envio
				//Permitir a tranferência
				//Controle de envio falso, pois ele é quem recebe de fato
				
				if (arquivoParaEnviar == null)
					arquivoParaEnviar = new File (campoArquivo.getText());
				
				DomineDuplex.setUltimoPath(arquivoParaEnviar.getParent() + "/");
				
				try{
					int porta = Integer.parseInt(campoPortaDestino.getText());					
					new ControladorDeEnvio(campoIP.getText(), porta , arquivoParaEnviar);
				}catch (Exception e2) {
					ComunicadorDeMensagens.erro("Insira uma porta válida, apenas números representam a porta.");
				}
				
			}
		});
		
		//panelInf Conteudo
		
		panelSup.add(arquivo);
		panelSup.add(campoArquivo);
		panelSup.add(btnArquivo);
		
		panelInf.add(endereco);
		panelInf.add(campoIP);
		panelInf.add(porta);
		panelInf.add(campoPortaDestino);
		panelInf.add(btnEnviar);
		
		this.add(panelSup);
		this.add(panelInf);
	}

	
	public JTextField getCampoArquivo() {
		return campoArquivo;
	}
	public void setCampoArquivo(JTextField campoArquivo) {
		this.campoArquivo = campoArquivo;
	}
	public JTextField getCampoIP() {
		return campoIP;
	}
	public void setCampoIP(JTextField campoIP) {
		this.campoIP = campoIP;
	}
	public JTextField getCampoPortaDestino() {
		return campoPortaDestino;
	}
	public void setCampoPortaDestino(JTextField campoPortaDestino) {
		this.campoPortaDestino = campoPortaDestino;
	}

}
